package com.golden.procedure.service;

import com.golden.procedure.domain.WorkCommentDO;
import com.golden.procedure.domain.WorkOrderPickDO;
import com.golden.procedure.domain.WorkPhotoProductDO;
import com.golden.procedure.query.WorkPhotographyQueryDO;
import com.golden.procedure.query.WorkPickQueryDO;
import com.golden.procedure.result.ResultDO;

/**
 * 工单信息管理 <b>Description:</b><br>
 * 
 * @author Reading.Reagan</a>
 * @version 1.0
 * @Note <b>ProjectName:</b> procedure-api <br>
 *       <b>PackageName:</b> com.golden.procedure.service <br>
 *       <b>ClassName:</b> IWorkOrderService <br>
 *       <b>Date:</b> 2018年9月25日 下午2:39:22
 */
public interface IWorkOrderPickService {

	/**
	 * 查询选片列表 <b>Description:</b><br>
	 * 
	 * @param queryDO
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 下午4:10:05 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO query(WorkPhotographyQueryDO queryDO);

	/**
	 * 添加选片记录 <b>Description: 添加选片记录</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 下午3:43:42 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO add(WorkOrderPickDO domain);

	/**
	 * 完成选片记录 <b>Description: 完成选片记录 </b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 下午3:43:42 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO record(WorkCommentDO domain);

	/**
	 * 开始选片<b>Description: 开始选片 1.未开始的选片：记录选片时间，创建新的业务单号，拷贝入底数据，进入选片； 2.进行中的选片：
	 * 查看最新的业务单号是否未提交，是：则沿用单号，同步入底照片数据，进入选片；
	 * 查看最新的业务单号是否已提交但未支付，是：则沿用单号，不允许编辑，进入选片页面浏览结果数据；
	 * 查看最新的业务单号是否已支付，是：则创建新的业务单号，拷贝上一次的入底及入册数据，同时同步最新的照片数据，进入选片；
	 * 3.已完成、重拍、补拍、改期、取消的选片： 查看是否有完成的业务单号： 有，则不允许编辑，只能查看本次业务单号的选片信息；
	 * 无，则提示：无选片记录； </b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 下午3:43:42 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO startPick(WorkPhotoProductDO domain);

	/**
	 * 查询加选订单类表<b>Description: 查询加选订单类表 </b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 下午3:43:42 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO queryByBusinessNo(WorkPickQueryDO queryDO);

	/**
	 * 取消已提交的加选订单 <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年10月8日 下午4:10:43 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO cancelPickOrder(WorkOrderPickDO domain);

	/**
	 * 删除加选订单 <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年10月8日 下午4:10:43 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO delPickOrder(WorkOrderPickDO domain);

	/**
	 * 获取本次选片的最后一次有效的业务单号 <b>Description:</b><br>
	 * 
	 * @param workOrderPickID
	 * @return String
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年10月15日 下午12:26:17 <br>
	 *       <b>Version:</b> 1.0
	 */
	public String getBusinessNo(Integer workOrderPickID);

	/** 获取前一次选片的片源 */
	public Integer getSource(String businessNo);

	/**
	 * 提交订单/支付成功后，更新加选订单的金额、状态等数据（内部服务接口） <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年10月30日 下午12:30:59 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO updateAmount(WorkOrderPickDO domain);

}
